name: Tests against recent Docker engine releases

on:
  schedule:
    # nightly build, at 23:59 CEST
    - cron:  '59 23 * * *'

jobs:
  test_stable_docker:
    name: "Core tests using stable Docker-CE"
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - uses: ./.github/actions/setup-build

      - name: Install Stable Docker
        run: curl https://get.docker.com

      - name: Check Docker version
        run: docker version

      - name: Build with Gradle
        run: ./gradlew cleanTest --no-daemon --continue --scan -Dscan.tag.DOCKER_STABLE testcontainers:test -Dorg.gradle.caching=false
      - uses: ./.github/actions/setup-junit-report

      - name: Notify to Slack on failures
        if: failure()
        id: slack
        uses: slackapi/slack-github-action@v1.26.0
        with:
          payload: |
            {
              "tc_project": "testcontainers-java",
              "tc_github_action_url": "https://github.com/testcontainers/testcontainers-java/actions/runs/${{ env.GITHUB_RUN_ID }}/job/${{ env.GITHUB_RUN_NUMBER }}",
              "tc_github_action_status": "FAILED",
              "tc_slack_channel_id": "${{ secrets.SLACK_DOCKER_LATEST_CHANNEL_ID }}"
            }
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_DOCKER_LATEST_WEBHOOK }}

  test_latest_docker:
    name: "Core tests using latest Docker-CE"
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - uses: ./.github/actions/setup-build

      - name: Install Latest Docker
        run: curl https://get.docker.com | CHANNEL=test sh

      - name: Check Docker version
        run: docker version

      - name: Build with Gradle
        run: ./gradlew cleanTest --no-daemon --continue --scan -Dscan.tag.DOCKER_LATEST testcontainers:test -Dorg.gradle.caching=false

      - uses: ./.github/actions/setup-junit-report

      - name: Notify to Slack on failures
        if: failure()
        id: slack
        uses: slackapi/slack-github-action@v1.26.0
        with:
          payload: |
            {
              "tc_project": "testcontainers-java",
              "tc_github_action_url": "https://github.com/testcontainers/testcontainers-java/actions/runs/${{ env.GITHUB_RUN_ID }}/job/${{ env.GITHUB_RUN_NUMBER }}",
              "tc_github_action_status": "FAILED",
              "tc_slack_channel_id": "${{ secrets.SLACK_DOCKER_LATEST_CHANNEL_ID }}"
            }
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_DOCKER_LATEST_WEBHOOK }}
